using System;
using MicrosoftResearch.Infer;
using MicrosoftResearch.Infer.Distributions;
using MicrosoftResearch.Infer.Collections;
using MicrosoftResearch.Infer.Factors;

namespace MicrosoftResearch.Infer.Models.User
{
	/// <summary>
	/// Class for performing inference in model 'Model' using algorithm 'ExpectationPropagation'.
	/// </summary>
	/// <remarks>
	/// The easiest way to use this class is to wrap an instance in a CompiledAlgorithm object and use
	/// the methods on CompiledAlgorithm to set parameters and execute inference.
	/// 
	/// If you instead wish to use this class directly, you must perform the following steps:
	/// 1) Create an instance of the class
	/// 2) Set the value of any externally-set fields e.g. data, priors
	/// 3) Call the Reset() method
	/// 4) Call the Initialise() method once
	/// 5) Call the Update() method multiple times  - each call performs one iteration of inference
	/// 6) Use the XXXMarginal() methods to retrieve posterior marginals for different variables.
	/// 
	/// Generated by Infer.NET 2.3 beta 4 at 19:26 on 29 May 2010.
	/// </remarks>
	public class Model46_EP : IIterativeProcess
	{
		#region Fields
		// Messages from uses of 'vbool138'
		public Bernoulli[] vbool138_uses_B;
		// The constant 'vBernoulli146'
		public Bernoulli vBernoulli146;
		// Message from definition of 'vbool138'
		public Bernoulli vbool138_F;
		// Messages from uses of 'vbool122'
		public Bernoulli[] vbool122_uses_B;
		// The constant 'vBernoulli130'
		public Bernoulli vBernoulli130;
		// Message from definition of 'vbool122'
		public Bernoulli vbool122_F;
		// Messages from uses of 'vbool347'
		public Bernoulli[] vbool347_uses_B;
		// Message from definition of 'vbool347'
		public Bernoulli vbool347_F;
		// Messages from uses of 'vbool130'
		public Bernoulli[] vbool130_uses_B;
		// The constant 'vBernoulli138'
		public Bernoulli vBernoulli138;
		// Message from definition of 'vbool130'
		public Bernoulli vbool130_F;
		// Messages from uses of 'vbool355'
		public Bernoulli[] vbool355_uses_B;
		// Message from definition of 'vbool355'
		public Bernoulli vbool355_F;
		// Messages from uses of 'vbool26'
		public Bernoulli[] vbool26_uses_B;
		// The constant 'vBernoulli34'
		public Bernoulli vBernoulli34;
		// Message from definition of 'vbool26'
		public Bernoulli vbool26_F;
		// Messages from uses of 'vbool363'
		public Bernoulli[] vbool363_uses_B;
		// Message from definition of 'vbool363'
		public Bernoulli vbool363_F;
		// Messages from uses of 'vbool99'
		public Bernoulli[] vbool99_uses_B;
		// The constant 'vBernoulli107'
		public Bernoulli vBernoulli107;
		// Message from definition of 'vbool99'
		public Bernoulli vbool99_F;
		// Messages from uses of 'vbool339'
		public Bernoulli[] vbool339_uses_B;
		// Message from definition of 'vbool339'
		public Bernoulli vbool339_F;
		// Messages from uses of 'vbool60'
		public Bernoulli[] vbool60_uses_B;
		// The constant 'vBernoulli68'
		public Bernoulli vBernoulli68;
		// Message from definition of 'vbool60'
		public Bernoulli vbool60_F;
		// Messages from uses of 'vbool323'
		public Bernoulli[] vbool323_uses_B;
		// Message from definition of 'vbool323'
		public Bernoulli vbool323_F;
		// Messages from uses of 'vbool34'
		public Bernoulli[] vbool34_uses_B;
		// The constant 'vBernoulli42'
		public Bernoulli vBernoulli42;
		// Message from definition of 'vbool34'
		public Bernoulli vbool34_F;
		// Messages from uses of 'vbool299'
		public Bernoulli[] vbool299_uses_B;
		// Message from definition of 'vbool299'
		public Bernoulli vbool299_F;
		// Messages from uses of 'vbool177'
		public Bernoulli[] vbool177_uses_B;
		// The constant 'vBernoulli185'
		public Bernoulli vBernoulli185;
		// Message from definition of 'vbool177'
		public Bernoulli vbool177_F;
		// Messages from uses of 'vbool463'
		public Bernoulli[] vbool463_uses_B;
		// Message from definition of 'vbool463'
		public Bernoulli vbool463_F;
		// Messages from uses of 'vbool52'
		public Bernoulli[] vbool52_uses_B;
		// The constant 'vBernoulli60'
		public Bernoulli vBernoulli60;
		// Message from definition of 'vbool52'
		public Bernoulli vbool52_F;
		// Messages from uses of 'vbool307'
		public Bernoulli[] vbool307_uses_B;
		// Message from definition of 'vbool307'
		public Bernoulli vbool307_F;
		// Messages from uses of 'vbool78'
		public Bernoulli[] vbool78_uses_B;
		// The constant 'vBernoulli86'
		public Bernoulli vBernoulli86;
		// Message from definition of 'vbool78'
		public Bernoulli vbool78_F;
		// Messages from uses of 'vbool315'
		public Bernoulli[] vbool315_uses_B;
		// Message from definition of 'vbool315'
		public Bernoulli vbool315_F;
		// Messages from uses of 'vbool169'
		public Bernoulli[] vbool169_uses_B;
		// The constant 'vBernoulli177'
		public Bernoulli vBernoulli177;
		// Message from definition of 'vbool169'
		public Bernoulli vbool169_F;
		// Messages from uses of 'vbool436'
		public Bernoulli[] vbool436_uses_B;
		// Message from definition of 'vbool436'
		public Bernoulli vbool436_F;
		// Messages from uses of 'vbool8'
		public Bernoulli[] vbool8_uses_B;
		// The constant 'vBernoulli16'
		public Bernoulli vBernoulli16;
		// Message from definition of 'vbool8'
		public Bernoulli vbool8_F;
		// Messages from uses of 'vbool291'
		public Bernoulli[] vbool291_uses_B;
		// Message from definition of 'vbool291'
		public Bernoulli vbool291_F;
		// Messages from uses of 'vbool86'
		public Bernoulli[] vbool86_uses_B;
		// The constant 'vBernoulli94'
		public Bernoulli vBernoulli94;
		// Message from definition of 'vbool86'
		public Bernoulli vbool86_F;
		// Messages from uses of 'vbool331'
		public Bernoulli[] vbool331_uses_B;
		// Message from definition of 'vbool331'
		public Bernoulli vbool331_F;
		// Messages from uses of 'vbool151'
		public Bernoulli[] vbool151_uses_B;
		// The constant 'vBernoulli159'
		public Bernoulli vBernoulli159;
		// Message from definition of 'vbool151'
		public Bernoulli vbool151_F;
		// Messages from uses of 'vbool428'
		public Bernoulli[] vbool428_uses_B;
		// Message from definition of 'vbool428'
		public Bernoulli vbool428_F;
		// Messages from uses of 'vbool464'
		public Bernoulli[] vbool464_uses_B;
		// Message from definition of 'vbool464'
		public Bernoulli vbool464_F;
		// Message to definition of 'vbool347'
		public Bernoulli vbool347_B;
		// Messages to uses of 'vbool122'
		public Bernoulli[] vbool122_uses_F;
		// Message to definition of 'vbool355'
		public Bernoulli vbool355_B;
		// Messages to uses of 'vbool130'
		public Bernoulli[] vbool130_uses_F;
		// Message to definition of 'vbool363'
		public Bernoulli vbool363_B;
		// Messages to uses of 'vbool26'
		public Bernoulli[] vbool26_uses_F;
		// Messages to uses of 'vbool138'
		public Bernoulli[] vbool138_uses_F;
		// Message to definition of 'vbool339'
		public Bernoulli vbool339_B;
		// Messages to uses of 'vbool99'
		public Bernoulli[] vbool99_uses_F;
		// The constant 'vBernoulli5'
		public Bernoulli vBernoulli5;
		// Message to definition of 'vbool323'
		public Bernoulli vbool323_B;
		// Messages to uses of 'vbool60'
		public Bernoulli[] vbool60_uses_F;
		// Message to definition of 'vbool299'
		public Bernoulli vbool299_B;
		// Messages to uses of 'vbool34'
		public Bernoulli[] vbool34_uses_F;
		// Message to definition of 'vbool463'
		public Bernoulli vbool463_B;
		// Messages to uses of 'vbool177'
		public Bernoulli[] vbool177_uses_F;
		// Message to definition of 'vbool307'
		public Bernoulli vbool307_B;
		// Messages to uses of 'vbool52'
		public Bernoulli[] vbool52_uses_F;
		// Message to definition of 'vbool315'
		public Bernoulli vbool315_B;
		// Messages to uses of 'vbool78'
		public Bernoulli[] vbool78_uses_F;
		// Message to definition of 'vbool436'
		public Bernoulli vbool436_B;
		// Messages to uses of 'vbool169'
		public Bernoulli[] vbool169_uses_F;
		// The constant 'vBernoulli6'
		public Bernoulli vBernoulli6;
		// Message to definition of 'vbool291'
		public Bernoulli vbool291_B;
		// Messages to uses of 'vbool8'
		public Bernoulli[] vbool8_uses_F;
		// Message to definition of 'vbool331'
		public Bernoulli vbool331_B;
		// Messages to uses of 'vbool86'
		public Bernoulli[] vbool86_uses_F;
		// Message to definition of 'vbool428'
		public Bernoulli vbool428_B;
		// Messages to uses of 'vbool151'
		public Bernoulli[] vbool151_uses_F;
		// Message to definition of 'vbool464'
		public Bernoulli vbool464_B;
		// Message to marginal of 'vbool347'
		public Bernoulli vbool347_marginal_B;
		// Message to marginal of 'vbool355'
		public Bernoulli vbool355_marginal_B;
		// Message to marginal of 'vbool363'
		public Bernoulli vbool363_marginal_B;
		// Message to marginal of 'vbool339'
		public Bernoulli vbool339_marginal_B;
		// Message to marginal of 'vbool323'
		public Bernoulli vbool323_marginal_B;
		// Message to marginal of 'vbool299'
		public Bernoulli vbool299_marginal_B;
		// Message to marginal of 'vbool463'
		public Bernoulli vbool463_marginal_B;
		// Message to marginal of 'vbool307'
		public Bernoulli vbool307_marginal_B;
		// Message to marginal of 'vbool315'
		public Bernoulli vbool315_marginal_B;
		// Message to marginal of 'vbool436'
		public Bernoulli vbool436_marginal_B;
		// Message to marginal of 'vbool291'
		public Bernoulli vbool291_marginal_B;
		// Message to marginal of 'vbool331'
		public Bernoulli vbool331_marginal_B;
		// Message to marginal of 'vbool428'
		public Bernoulli vbool428_marginal_B;
		// Message to marginal of 'vbool464'
		public Bernoulli vbool464_marginal_B;
		// Message to marginal of 'vbool138'
		public Bernoulli vbool138_marginal_B;
		// Message to marginal of 'vbool122'
		public Bernoulli vbool122_marginal_B;
		// Message to marginal of 'vbool130'
		public Bernoulli vbool130_marginal_B;
		// Message to marginal of 'vbool26'
		public Bernoulli vbool26_marginal_B;
		// Message to marginal of 'vbool99'
		public Bernoulli vbool99_marginal_B;
		// Message to marginal of 'vbool60'
		public Bernoulli vbool60_marginal_B;
		// Message to marginal of 'vbool34'
		public Bernoulli vbool34_marginal_B;
		// Message to marginal of 'vbool177'
		public Bernoulli vbool177_marginal_B;
		// Message to marginal of 'vbool52'
		public Bernoulli vbool52_marginal_B;
		// Message to marginal of 'vbool78'
		public Bernoulli vbool78_marginal_B;
		// Message to marginal of 'vbool169'
		public Bernoulli vbool169_marginal_B;
		// Message to marginal of 'vbool8'
		public Bernoulli vbool8_marginal_B;
		// Message to marginal of 'vbool86'
		public Bernoulli vbool86_marginal_B;
		// Message to marginal of 'vbool151'
		public Bernoulli vbool151_marginal_B;
		#endregion

		#region Methods
		/// <summary>
		/// Configures constant values that will not change during the lifetime of the class.
		/// </summary>
		/// <remarks>
		/// This method should be called once only after the class is instantiated.  In future, it will likely become
		/// the class constructor.
		/// </remarks>
		public void Reset()
		{
			// Create array for 'vbool138_uses' backwards messages.
			this.vbool138_uses_B = new Bernoulli[3];
			this.vBernoulli146 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool138_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli146);
			}
			this.vbool138_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli146);
			// Message to 'vbool138' from Random factor
			this.vbool138_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli146);
			// Create array for 'vbool122_uses' backwards messages.
			this.vbool122_uses_B = new Bernoulli[2];
			this.vBernoulli130 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool122_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli130);
			}
			this.vbool122_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli130);
			// Message to 'vbool122' from Random factor
			this.vbool122_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli130);
			// Create array for 'vbool347_uses' backwards messages.
			this.vbool347_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool347_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool347_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool130_uses' backwards messages.
			this.vbool130_uses_B = new Bernoulli[2];
			this.vBernoulli138 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool130_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli138);
			}
			this.vbool130_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli138);
			// Message to 'vbool130' from Random factor
			this.vbool130_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli138);
			// Create array for 'vbool355_uses' backwards messages.
			this.vbool355_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool355_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool355_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool26_uses' backwards messages.
			this.vbool26_uses_B = new Bernoulli[2];
			this.vBernoulli34 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool26_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli34);
			}
			this.vbool26_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli34);
			// Message to 'vbool26' from Random factor
			this.vbool26_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli34);
			// Create array for 'vbool363_uses' backwards messages.
			this.vbool363_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool363_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool363_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool99_uses' backwards messages.
			this.vbool99_uses_B = new Bernoulli[2];
			this.vBernoulli107 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool99_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli107);
			}
			this.vbool99_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli107);
			// Message to 'vbool99' from Random factor
			this.vbool99_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli107);
			// Create array for 'vbool339_uses' backwards messages.
			this.vbool339_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool339_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool339_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool60_uses' backwards messages.
			this.vbool60_uses_B = new Bernoulli[3];
			this.vBernoulli68 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool60_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli68);
			}
			this.vbool60_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli68);
			// Message to 'vbool60' from Random factor
			this.vbool60_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli68);
			// Create array for 'vbool323_uses' backwards messages.
			this.vbool323_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool323_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool323_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool34_uses' backwards messages.
			this.vbool34_uses_B = new Bernoulli[1];
			this.vBernoulli42 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool34_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli42);
			}
			this.vbool34_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli42);
			// Message to 'vbool34' from Random factor
			this.vbool34_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli42);
			// Create array for 'vbool299_uses' backwards messages.
			this.vbool299_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool299_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool299_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool177_uses' backwards messages.
			this.vbool177_uses_B = new Bernoulli[2];
			this.vBernoulli185 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool177_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli185);
			}
			this.vbool177_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli185);
			// Message to 'vbool177' from Random factor
			this.vbool177_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli185);
			// Create array for 'vbool463_uses' backwards messages.
			this.vbool463_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool463_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool463_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool52_uses' backwards messages.
			this.vbool52_uses_B = new Bernoulli[2];
			this.vBernoulli60 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool52_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli60);
			}
			this.vbool52_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli60);
			// Message to 'vbool52' from Random factor
			this.vbool52_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli60);
			// Create array for 'vbool307_uses' backwards messages.
			this.vbool307_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool307_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool307_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool78_uses' backwards messages.
			this.vbool78_uses_B = new Bernoulli[2];
			this.vBernoulli86 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool78_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli86);
			}
			this.vbool78_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli86);
			// Message to 'vbool78' from Random factor
			this.vbool78_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli86);
			// Create array for 'vbool315_uses' backwards messages.
			this.vbool315_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool315_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool315_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool169_uses' backwards messages.
			this.vbool169_uses_B = new Bernoulli[2];
			this.vBernoulli177 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool169_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli177);
			}
			this.vbool169_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli177);
			// Message to 'vbool169' from Random factor
			this.vbool169_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli177);
			// Create array for 'vbool436_uses' backwards messages.
			this.vbool436_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool436_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool436_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool8_uses' backwards messages.
			this.vbool8_uses_B = new Bernoulli[1];
			this.vBernoulli16 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool8_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli16);
			}
			this.vbool8_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli16);
			// Message to 'vbool8' from Random factor
			this.vbool8_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli16);
			// Create array for 'vbool291_uses' backwards messages.
			this.vbool291_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool291_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool291_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool86_uses' backwards messages.
			this.vbool86_uses_B = new Bernoulli[2];
			this.vBernoulli94 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool86_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli94);
			}
			this.vbool86_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli94);
			// Message to 'vbool86' from Random factor
			this.vbool86_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli94);
			// Create array for 'vbool331_uses' backwards messages.
			this.vbool331_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool331_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool331_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool151_uses' backwards messages.
			this.vbool151_uses_B = new Bernoulli[2];
			this.vBernoulli159 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool151_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli159);
			}
			this.vbool151_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli159);
			// Message to 'vbool151' from Random factor
			this.vbool151_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli159);
			// Create array for 'vbool428_uses' backwards messages.
			this.vbool428_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool428_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool428_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool464_uses' backwards messages.
			this.vbool464_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool464_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool464_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool347_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool122_uses' forwards messages.
			this.vbool122_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool122_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli130);
			}
			this.vbool355_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool130_uses' forwards messages.
			this.vbool130_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool130_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli138);
			}
			this.vbool363_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool26_uses' forwards messages.
			this.vbool26_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool26_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli34);
			}
			// Create array for 'vbool138_uses' forwards messages.
			this.vbool138_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool138_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli146);
			}
			this.vbool339_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool99_uses' forwards messages.
			this.vbool99_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool99_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli107);
			}
			this.vBernoulli5 = new Bernoulli(0.9);
			// Message to 'vbool347_uses' from EqualRandom factor
			this.vbool347_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool355_uses' from EqualRandom factor
			this.vbool355_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool363_uses' from EqualRandom factor
			this.vbool363_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool339_uses' from EqualRandom factor
			this.vbool339_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool323_uses' from EqualRandom factor
			this.vbool323_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool299_uses' from EqualRandom factor
			this.vbool299_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool307_uses' from EqualRandom factor
			this.vbool307_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool315_uses' from EqualRandom factor
			this.vbool315_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool436_uses' from EqualRandom factor
			this.vbool436_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool291_uses' from EqualRandom factor
			this.vbool291_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool331_uses' from EqualRandom factor
			this.vbool331_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool428_uses' from EqualRandom factor
			this.vbool428_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool347' from ReplicateWithMarginal factor
			this.vbool347_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool347_uses_B, this.vbool347_B);
			// Message to 'vbool355' from ReplicateWithMarginal factor
			this.vbool355_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool355_uses_B, this.vbool355_B);
			// Message to 'vbool363' from ReplicateWithMarginal factor
			this.vbool363_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool363_uses_B, this.vbool363_B);
			// Message to 'vbool339' from ReplicateWithMarginal factor
			this.vbool339_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool339_uses_B, this.vbool339_B);
			this.vbool323_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool323' from ReplicateWithMarginal factor
			this.vbool323_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool323_uses_B, this.vbool323_B);
			// Create array for 'vbool60_uses' forwards messages.
			this.vbool60_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool60_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli68);
			}
			this.vbool299_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool299' from ReplicateWithMarginal factor
			this.vbool299_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool299_uses_B, this.vbool299_B);
			// Create array for 'vbool34_uses' forwards messages.
			this.vbool34_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool34_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli42);
			}
			// Message to 'vbool34_uses' from UsesEqualDef factor
			this.vbool34_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool34_uses_B, this.vbool34_F, 0, this.vbool34_uses_F[0]);
			// Message to 'vbool26_uses' from AreEqual factor
			this.vbool26_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool299_B, this.vbool34_uses_F[0]);
			// Message to 'vbool26_uses' from UsesEqualDef factor
			this.vbool26_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool26_uses_B, this.vbool26_F, 0, this.vbool26_uses_F[0]);
			// Message to 'vbool138_uses' from AreEqual factor
			this.vbool138_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool363_B, this.vbool26_uses_F[0]);
			this.vbool463_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool177_uses' forwards messages.
			this.vbool177_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool177_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli185);
			}
			this.vbool307_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool307' from ReplicateWithMarginal factor
			this.vbool307_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool307_uses_B, this.vbool307_B);
			// Create array for 'vbool52_uses' forwards messages.
			this.vbool52_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool52_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli60);
			}
			this.vbool315_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool315' from ReplicateWithMarginal factor
			this.vbool315_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool315_uses_B, this.vbool315_B);
			// Create array for 'vbool78_uses' forwards messages.
			this.vbool78_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool78_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli86);
			}
			this.vbool436_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool436' from ReplicateWithMarginal factor
			this.vbool436_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool436_uses_B, this.vbool436_B);
			// Create array for 'vbool169_uses' forwards messages.
			this.vbool169_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool169_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli177);
			}
			this.vBernoulli6 = new Bernoulli(0.9);
			// Message to 'vbool463_uses' from EqualRandom factor
			this.vbool463_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool464_uses' from EqualRandom factor
			this.vbool464_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool463' from ReplicateWithMarginal factor
			this.vbool463_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool463_uses_B, this.vbool463_B);
			this.vbool291_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool291' from ReplicateWithMarginal factor
			this.vbool291_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool291_uses_B, this.vbool291_B);
			// Create array for 'vbool8_uses' forwards messages.
			this.vbool8_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool8_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli16);
			}
			// Message to 'vbool8_uses' from UsesEqualDef factor
			this.vbool8_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool8_uses_B, this.vbool8_F, 0, this.vbool8_uses_F[0]);
			// Message to 'vbool52_uses' from AreEqual factor
			this.vbool52_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool291_B, this.vbool8_uses_F[0]);
			// Message to 'vbool52_uses' from UsesEqualDef factor
			this.vbool52_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool52_uses_B, this.vbool52_F, 0, this.vbool52_uses_F[0]);
			// Message to 'vbool60_uses' from AreEqual factor
			this.vbool60_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool307_B, this.vbool52_uses_F[0]);
			this.vbool331_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool331' from ReplicateWithMarginal factor
			this.vbool331_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool331_uses_B, this.vbool331_B);
			// Create array for 'vbool86_uses' forwards messages.
			this.vbool86_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool86_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli94);
			}
			this.vbool428_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool428' from ReplicateWithMarginal factor
			this.vbool428_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool428_uses_B, this.vbool428_B);
			// Create array for 'vbool151_uses' forwards messages.
			this.vbool151_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool151_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli159);
			}
			this.vbool464_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool464' from ReplicateWithMarginal factor
			this.vbool464_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool464_uses_B, this.vbool464_B);
		}

		/// <summary>
		/// Creates message arrays and initialises their values ready for inference to be performed.
		/// </summary>
		/// <remarks>
		/// This method should be called once each time inference is performed. Since the initialisation
		/// procedure normally dependson external values such as priors and array sizes, all external
		/// values must be set before calling this method.
		/// 
		/// As well as initialising message arrays, this method also performs any message passing that
		/// the scheduler determines need only be carried out once.
		/// </remarks>
		public void Initialise()
		{
			this.vbool347_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool355_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool363_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool339_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool323_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool299_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool463_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool307_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool315_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool436_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool291_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool331_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool428_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool464_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool138_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli146);
			this.vbool122_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli130);
			this.vbool130_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli138);
			this.vbool26_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli34);
			this.vbool99_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli107);
			this.vbool60_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli68);
			this.vbool34_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli42);
			this.vbool177_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli185);
			this.vbool52_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli60);
			this.vbool78_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli86);
			this.vbool169_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli177);
			this.vbool8_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli16);
			this.vbool86_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli94);
			this.vbool151_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli159);
		}

		/// <summary>
		/// Performs one iteration of inference.
		/// </summary>
		/// <remarks>
		/// This method should be called multiple times, after calling Initialise(), in order to perform
		/// multiple iterations of message passing.  You can call methods to retrieve posterior marginals
		/// at any time - the returned marginal will be the estimated marginal given the current state of
		/// the message passing algorithm.  This can be useful for monitoring convergence of the algorithm.
		/// 
		/// Where the scheduler has determined inference can be performed without iteration, this method
		/// does nothing.
		/// </remarks>
		public void Update()
		{
			// Message to 'vbool138_uses' from UsesEqualDef factor
			this.vbool138_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool138_uses_B, this.vbool138_F, 0, this.vbool138_uses_F[0]);
			// Message to 'vbool122_uses' from AreEqual factor
			this.vbool122_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool347_B, this.vbool138_uses_F[0]);
			// Message to 'vbool122_uses' from UsesEqualDef factor
			this.vbool122_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool122_uses_B, this.vbool122_F, 1, this.vbool122_uses_F[1]);
			// Message to 'vbool99_uses' from AreEqual factor
			this.vbool99_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool339_B, this.vbool122_uses_F[1]);
			// Message to 'vbool99_uses' from UsesEqualDef factor
			this.vbool99_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool99_uses_B, this.vbool99_F, 1, this.vbool99_uses_F[1]);
			// Message to 'vbool177_uses' from AreEqual factor
			this.vbool177_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool463_B, this.vbool99_uses_F[1]);
			// Message to 'vbool177_uses' from UsesEqualDef factor
			this.vbool177_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool177_uses_B, this.vbool177_F, 1, this.vbool177_uses_F[1]);
			// Message to 'vbool169_uses' from AreEqual factor
			this.vbool169_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool436_B, this.vbool177_uses_F[1]);
			// Message to 'vbool169_uses' from UsesEqualDef factor
			this.vbool169_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool169_uses_B, this.vbool169_F, 1, this.vbool169_uses_F[1]);
			// Message to 'vbool151_uses' from AreEqual factor
			this.vbool151_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool428_B, this.vbool169_uses_F[1]);
			// Message to 'vbool151_uses' from UsesEqualDef factor
			this.vbool151_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool151_uses_B, this.vbool151_F, 1, this.vbool151_uses_F[1]);
			// Message to 'vbool86_uses' from AreEqual factor
			this.vbool86_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool464_B, this.vbool151_uses_F[1]);
			// Message to 'vbool86_uses' from UsesEqualDef factor
			this.vbool86_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool86_uses_B, this.vbool86_F, 0, this.vbool86_uses_F[0]);
			// Message to 'vbool78_uses' from AreEqual factor
			this.vbool78_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool331_B, this.vbool86_uses_F[0]);
			// Message to 'vbool78_uses' from UsesEqualDef factor
			this.vbool78_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool78_uses_B, this.vbool78_F, 0, this.vbool78_uses_F[0]);
			// Message to 'vbool60_uses' from AreEqual factor
			this.vbool60_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool315_B, this.vbool78_uses_F[0]);
			// Message to 'vbool60_uses' from UsesEqualDef factor
			this.vbool60_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool60_uses_B, this.vbool60_F, 0, this.vbool60_uses_F[0]);
			// Message to 'vbool130_uses' from AreEqual factor
			this.vbool130_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool323_B, this.vbool60_uses_F[0]);
			// Message to 'vbool130_uses' from UsesEqualDef factor
			this.vbool130_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool130_uses_B, this.vbool130_F, 0, this.vbool130_uses_F[0]);
			// Message to 'vbool138_uses' from AreEqual factor
			this.vbool138_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool355_B, this.vbool130_uses_F[0]);
			// Message to 'vbool138_uses' from UsesEqualDef factor
			this.vbool138_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool138_uses_B, this.vbool138_F, 1, this.vbool138_uses_F[1]);
			// Message to 'vbool130_uses' from AreEqual factor
			this.vbool130_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool355_B, this.vbool138_uses_F[1]);
			// Message to 'vbool130_marginal' from UsesEqualDef factor
			this.vbool130_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool130_uses_B, this.vbool130_F, this.vbool130_marginal_B);
			// Message to 'vbool355' from AreEqual factor
			this.vbool355_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool138_uses_F[1], this.vbool130_uses_F[0]);
			// Message to 'vbool355_marginal' from ReplicateWithMarginal factor
			this.vbool355_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool355_uses_B, this.vbool355_F, this.vbool355_marginal_B);
			// Message to 'vbool130_uses' from UsesEqualDef factor
			this.vbool130_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool130_uses_B, this.vbool130_F, 1, this.vbool130_uses_F[1]);
			// Message to 'vbool60_uses' from AreEqual factor
			this.vbool60_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool323_B, this.vbool130_uses_F[1]);
			// Message to 'vbool60_marginal' from UsesEqualDef factor
			this.vbool60_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool60_uses_B, this.vbool60_F, this.vbool60_marginal_B);
			// Message to 'vbool323' from AreEqual factor
			this.vbool323_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool60_uses_F[0], this.vbool130_uses_F[1]);
			// Message to 'vbool323_marginal' from ReplicateWithMarginal factor
			this.vbool323_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool323_uses_B, this.vbool323_F, this.vbool323_marginal_B);
			// Message to 'vbool60_uses' from UsesEqualDef factor
			this.vbool60_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool60_uses_B, this.vbool60_F, 1, this.vbool60_uses_F[1]);
			// Message to 'vbool52_uses' from AreEqual factor
			this.vbool52_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool307_B, this.vbool60_uses_F[1]);
			// Message to 'vbool52_marginal' from UsesEqualDef factor
			this.vbool52_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool52_uses_B, this.vbool52_F, this.vbool52_marginal_B);
			// Message to 'vbool307' from AreEqual factor
			this.vbool307_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool60_uses_F[1], this.vbool52_uses_F[0]);
			// Message to 'vbool307_marginal' from ReplicateWithMarginal factor
			this.vbool307_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool307_uses_B, this.vbool307_F, this.vbool307_marginal_B);
			// Message to 'vbool60_uses' from UsesEqualDef factor
			this.vbool60_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool60_uses_B, this.vbool60_F, 2, this.vbool60_uses_F[2]);
			// Message to 'vbool78_uses' from AreEqual factor
			this.vbool78_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool315_B, this.vbool60_uses_F[2]);
			// Message to 'vbool78_marginal' from UsesEqualDef factor
			this.vbool78_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool78_uses_B, this.vbool78_F, this.vbool78_marginal_B);
			// Message to 'vbool315' from AreEqual factor
			this.vbool315_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool60_uses_F[2], this.vbool78_uses_F[0]);
			// Message to 'vbool315_marginal' from ReplicateWithMarginal factor
			this.vbool315_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool315_uses_B, this.vbool315_F, this.vbool315_marginal_B);
			// Message to 'vbool52_uses' from UsesEqualDef factor
			this.vbool52_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool52_uses_B, this.vbool52_F, 1, this.vbool52_uses_F[1]);
			// Message to 'vbool8_uses' from AreEqual factor
			this.vbool8_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool291_B, this.vbool52_uses_F[1]);
			// Message to 'vbool8_marginal' from UsesEqualDef factor
			this.vbool8_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool8_uses_B, this.vbool8_F, this.vbool8_marginal_B);
			// Message to 'vbool291' from AreEqual factor
			this.vbool291_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool8_uses_F[0], this.vbool52_uses_F[1]);
			// Message to 'vbool291_marginal' from ReplicateWithMarginal factor
			this.vbool291_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool291_uses_B, this.vbool291_F, this.vbool291_marginal_B);
			// Message to 'vbool78_uses' from UsesEqualDef factor
			this.vbool78_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool78_uses_B, this.vbool78_F, 1, this.vbool78_uses_F[1]);
			// Message to 'vbool86_uses' from AreEqual factor
			this.vbool86_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool331_B, this.vbool78_uses_F[1]);
			// Message to 'vbool86_marginal' from UsesEqualDef factor
			this.vbool86_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool86_uses_B, this.vbool86_F, this.vbool86_marginal_B);
			// Message to 'vbool331' from AreEqual factor
			this.vbool331_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool86_uses_F[0], this.vbool78_uses_F[1]);
			// Message to 'vbool331_marginal' from ReplicateWithMarginal factor
			this.vbool331_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool331_uses_B, this.vbool331_F, this.vbool331_marginal_B);
			// Message to 'vbool86_uses' from UsesEqualDef factor
			this.vbool86_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool86_uses_B, this.vbool86_F, 1, this.vbool86_uses_F[1]);
			// Message to 'vbool151_uses' from AreEqual factor
			this.vbool151_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool464_B, this.vbool86_uses_F[1]);
			// Message to 'vbool151_marginal' from UsesEqualDef factor
			this.vbool151_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool151_uses_B, this.vbool151_F, this.vbool151_marginal_B);
			// Message to 'vbool464' from AreEqual factor
			this.vbool464_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool86_uses_F[1], this.vbool151_uses_F[1]);
			// Message to 'vbool464_marginal' from ReplicateWithMarginal factor
			this.vbool464_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool464_uses_B, this.vbool464_F, this.vbool464_marginal_B);
			// Message to 'vbool151_uses' from UsesEqualDef factor
			this.vbool151_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool151_uses_B, this.vbool151_F, 0, this.vbool151_uses_F[0]);
			// Message to 'vbool169_uses' from AreEqual factor
			this.vbool169_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool428_B, this.vbool151_uses_F[0]);
			// Message to 'vbool169_marginal' from UsesEqualDef factor
			this.vbool169_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool169_uses_B, this.vbool169_F, this.vbool169_marginal_B);
			// Message to 'vbool428' from AreEqual factor
			this.vbool428_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool151_uses_F[0], this.vbool169_uses_F[1]);
			// Message to 'vbool428_marginal' from ReplicateWithMarginal factor
			this.vbool428_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool428_uses_B, this.vbool428_F, this.vbool428_marginal_B);
			// Message to 'vbool169_uses' from UsesEqualDef factor
			this.vbool169_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool169_uses_B, this.vbool169_F, 0, this.vbool169_uses_F[0]);
			// Message to 'vbool177_uses' from AreEqual factor
			this.vbool177_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool436_B, this.vbool169_uses_F[0]);
			// Message to 'vbool177_marginal' from UsesEqualDef factor
			this.vbool177_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool177_uses_B, this.vbool177_F, this.vbool177_marginal_B);
			// Message to 'vbool436' from AreEqual factor
			this.vbool436_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool177_uses_F[1], this.vbool169_uses_F[0]);
			// Message to 'vbool436_marginal' from ReplicateWithMarginal factor
			this.vbool436_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool436_uses_B, this.vbool436_F, this.vbool436_marginal_B);
			// Message to 'vbool177_uses' from UsesEqualDef factor
			this.vbool177_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool177_uses_B, this.vbool177_F, 0, this.vbool177_uses_F[0]);
			// Message to 'vbool99_uses' from AreEqual factor
			this.vbool99_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool463_B, this.vbool177_uses_F[0]);
			// Message to 'vbool99_marginal' from UsesEqualDef factor
			this.vbool99_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool99_uses_B, this.vbool99_F, this.vbool99_marginal_B);
			// Message to 'vbool463' from AreEqual factor
			this.vbool463_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool99_uses_F[1], this.vbool177_uses_F[0]);
			// Message to 'vbool463_marginal' from ReplicateWithMarginal factor
			this.vbool463_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool463_uses_B, this.vbool463_F, this.vbool463_marginal_B);
			// Message to 'vbool99_uses' from UsesEqualDef factor
			this.vbool99_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool99_uses_B, this.vbool99_F, 0, this.vbool99_uses_F[0]);
			// Message to 'vbool122_uses' from AreEqual factor
			this.vbool122_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool339_B, this.vbool99_uses_F[0]);
			// Message to 'vbool122_marginal' from UsesEqualDef factor
			this.vbool122_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool122_uses_B, this.vbool122_F, this.vbool122_marginal_B);
			// Message to 'vbool339' from AreEqual factor
			this.vbool339_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool99_uses_F[0], this.vbool122_uses_F[1]);
			// Message to 'vbool339_marginal' from ReplicateWithMarginal factor
			this.vbool339_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool339_uses_B, this.vbool339_F, this.vbool339_marginal_B);
			// Message to 'vbool122_uses' from UsesEqualDef factor
			this.vbool122_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool122_uses_B, this.vbool122_F, 0, this.vbool122_uses_F[0]);
			// Message to 'vbool138_uses' from AreEqual factor
			this.vbool138_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool347_B, this.vbool122_uses_F[0]);
			// Message to 'vbool138_marginal' from UsesEqualDef factor
			this.vbool138_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool138_uses_B, this.vbool138_F, this.vbool138_marginal_B);
			// Message to 'vbool347' from AreEqual factor
			this.vbool347_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool138_uses_F[0], this.vbool122_uses_F[0]);
			// Message to 'vbool347_marginal' from ReplicateWithMarginal factor
			this.vbool347_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool347_uses_B, this.vbool347_F, this.vbool347_marginal_B);
			// Message to 'vbool138_uses' from UsesEqualDef factor
			this.vbool138_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool138_uses_B, this.vbool138_F, 2, this.vbool138_uses_F[2]);
			// Message to 'vbool26_uses' from AreEqual factor
			this.vbool26_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool363_B, this.vbool138_uses_F[2]);
			// Message to 'vbool26_marginal' from UsesEqualDef factor
			this.vbool26_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool26_uses_B, this.vbool26_F, this.vbool26_marginal_B);
			// Message to 'vbool363' from AreEqual factor
			this.vbool363_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool138_uses_F[2], this.vbool26_uses_F[0]);
			// Message to 'vbool363_marginal' from ReplicateWithMarginal factor
			this.vbool363_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool363_uses_B, this.vbool363_F, this.vbool363_marginal_B);
			// Message to 'vbool26_uses' from UsesEqualDef factor
			this.vbool26_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool26_uses_B, this.vbool26_F, 1, this.vbool26_uses_F[1]);
			// Message to 'vbool34_uses' from AreEqual factor
			this.vbool34_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool299_B, this.vbool26_uses_F[1]);
			// Message to 'vbool34_marginal' from UsesEqualDef factor
			this.vbool34_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool34_uses_B, this.vbool34_F, this.vbool34_marginal_B);
			// Message to 'vbool299' from AreEqual factor
			this.vbool299_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool34_uses_F[0], this.vbool26_uses_F[1]);
			// Message to 'vbool299_marginal' from ReplicateWithMarginal factor
			this.vbool299_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool299_uses_B, this.vbool299_F, this.vbool299_marginal_B);
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool130' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool130Marginal()
		{
			return this.vbool130_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool355' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool355Marginal()
		{
			return this.vbool355_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool60' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool60Marginal()
		{
			return this.vbool60_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool323' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool323Marginal()
		{
			return this.vbool323_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool52' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool52Marginal()
		{
			return this.vbool52_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool307' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool307Marginal()
		{
			return this.vbool307_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool78' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool78Marginal()
		{
			return this.vbool78_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool315' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool315Marginal()
		{
			return this.vbool315_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool8' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool8Marginal()
		{
			return this.vbool8_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool291' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool291Marginal()
		{
			return this.vbool291_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool86' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool86Marginal()
		{
			return this.vbool86_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool331' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool331Marginal()
		{
			return this.vbool331_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool151' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool151Marginal()
		{
			return this.vbool151_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool464' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool464Marginal()
		{
			return this.vbool464_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool169' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool169Marginal()
		{
			return this.vbool169_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool428' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool428Marginal()
		{
			return this.vbool428_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool177' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool177Marginal()
		{
			return this.vbool177_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool436' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool436Marginal()
		{
			return this.vbool436_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool99' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool99Marginal()
		{
			return this.vbool99_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool463' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool463Marginal()
		{
			return this.vbool463_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool122' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool122Marginal()
		{
			return this.vbool122_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool339' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool339Marginal()
		{
			return this.vbool339_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool138' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool138Marginal()
		{
			return this.vbool138_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool347' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool347Marginal()
		{
			return this.vbool347_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool26' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool26Marginal()
		{
			return this.vbool26_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool363' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool363Marginal()
		{
			return this.vbool363_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool34' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool34Marginal()
		{
			return this.vbool34_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool299' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool299Marginal()
		{
			return this.vbool299_marginal_B;
		}

		#endregion

	}

}
